home *** CD-ROM | disk | FTP | other *** search
- [BTX]
- +---------------------------------------------------------------------+
- | ■CUTTER.EXE 簡易文字列処理プログラム■ |
- +---------------------------------------------------------------------+
- 関西大学コンピュータ同好会・HRRN
-
- ★はじめに★
-
- ▽CUTTER.EXEは、文章折り畳み、それにともなう禁則処理、種々の文
- 字列変換や罫線の変換など、オリジナルテキストを、より汎用的なものにするこ
- とを目的としたツールです。
-
- ▽CUTTER.EXEのオリジナルプロトは、関西大学コンピュータ同好会に
- おける、恒例の占いプログラムの製作現場において、そのデータである日本語文
- 章に改行記号が無いばかりに、プログラマが苦労し、プリンタが文句垂れるとい
- う事態を改善すべく製作されたものでした。占い用の出力データ入力時に、改行
- 記号をいちいち手で入れるなどという、大凡人間のするべきではないような作業
- に忙殺されているメンバーを見ている内に、これではいけないと思い立ったとい
- うわけです。製作当時、その機能は(全く)盛りだくさんではなく、文章の折り
- 畳みと、それに付随する禁則処理をする能力しかありませんでしたが、一度に大
- 量のファイルを扱えるよう、ワイルドカードをサポートしていたので、何とか実
- 用になっていました。
-
- ▽今回、新たにバージョンを上げることにしたのですが、そのきっかけというの
- は、前回の低機能に飽きたということもありますが、何よりも(熱烈な)TOW
- NSユーザーである一人の後輩から、フリコレ用に「例のプログラム」を使いた
- い旨、打診があったことでした。固辞するHRRNを繰り返し説得した彼に負け
- て、応募を許可したのですが、さすがにあのままで人様にお見せするのは申し訳
- なかったので、今回のバージョンアップになったというわけです。元来類似のプ
- ログラムは多くありますが、それなりに便利なように製作したつもりですので、
- 一度試しに使ってみてから、デリートして下さい(^^;)。
-
-
- ★使い方★
-
- ▽使用方法は、折り畳みをしたいテキストファイルを指定するだけですが、その
- 折り畳み幅、旧ファイルの保存如何、新たに加えた文字列処理のスイッチ類に関
- して、若干の(?)オプションがあります。基本的にはワイルドカードをサポー
- トする引数形式ですが、少々汎用性をもたせようと考え、オプションでフィルタ
- としても使えます。その代わり、エラーメッセージ等は、全て標準エラー出力に
- 出していますので、「メッセージ表示がうるさいのでNULデバイスに捨てる」
- ような使い方は出来ません。また、当たり前の話ですが、この手の整形プログラ
- ムは、もとよりコンピュータ言語のソースプログラムには馴染みません。整形後
- のコンパイラ等による処理結果は、全く未定義です。ただし、文字列処理に関し
- ては、何らかの有用な使い方があるかもしれません。
-
- ▽以下に、ヘルプ画面を示します。
- +---------------------------------------------------------------------+
- |CUTTER.EXE (C) HRRN's Program Factory in K.U.C.C. |
- | |
- |・書式 |
- | CUTTER [{/|-}<オプション>] {{/|-}R[3]|<ファイルネーム>} |
- |・ファイルネーム |
- | ワイルドカードが可能。Dオプションなしなら、旧ファイルを.OLDで保存 |
- |・オプションリスト |
- | ? H ヘルプの表示 |
- | R[{1|2|3}(3)] 1・標準入力を利用2・標準出力を利用3・1&2(フィルタ |
- |) |
- | D[{0|1|2}(1)] 0・.OLDを保護 1・.OLDを更新 2・旧ファイルを削除 |
- | N ファイル終端に1Ahを付けない |
- | B[<バッファサイズ>(4096)] 行バッファのサイズ(大きすぎるとメモリエラーで終了) |
- | T[<タブサイズ>(8)] タブサイズの指定 |
- | T{S|T} S・タブのスペース化 T・スペースのタブ化 |
- | K[<タテ><ヨコ><カド>(|-+)] NEC,JIS罫線を指定のANK文字に変換 |
- | SZ{U|L|H} U・大文字化L・小文字化H・全角英数字カナの半角化 |
- | SH{U|L|Z} U,Z・同上Z・ANKの全角化 |
- | C[<カットサイズ>(72)] 指定幅ごとに改行を挿入。ナキワカレは+1桁。禁則は+2 |
- |桁。最高で+3 |
- | C{H|K|N} H・半角 K・全角記号 N・全角数字を段落頭に指定 |
- | L <5ケタ>:でナンバリングする |
- |・[]内は省略可。{|}からは選択。()内はデフォルト値 |
- +---------------------------------------------------------------------+
-
- ▽HELPのみでも、かなりの部分を理解できると思うのですが、形式的に説明
- しておきます。以下の説明文中の [] は省略可を、{|}は選択を、()はデフォルト
- を表しています。書式は、次の通りです。
-
- CUTTER [{/|-}<オプション>] {{/|-}R[3]|<ファイルネーム>}
-
- ▽ファイル名は、DOSのワイルドカードが可能で、複数個書くことができます。
- ファイル名間は必ずスペースで区切って下さい。オプションの指定についても同
- 様です。通常は、処理前の旧ファイルは、拡張子を.OLDに変更して保存します。
- ファイル名を省略してもよいのは、リダイレクトオプションの3が指定されてい
- る場合のみで、3を指定した場合、CUTTERは、完全にフィルタとして振る
- 舞います。
-
- ▽各オプションの機能は、以下の通りです。
- +-----------------------+---------------------------------------------+
- |{?|H} |先に示したヘルプ画面を表示して終了します。 |
- +-----------------------+---------------------------------------------+
- |R1 |標準入力から入力し、指定されたファイルを作成 |
- | |します。 |
- |R2 |指定されたファイルから入力し、標準出力に書き |
- | |出します。旧ファイルの更新はしません。 |
- |R[3] |フィルタコマンドとして振る舞います。 |
- +-----------------------+---------------------------------------------+
- |D0 |拡張子.OLDを優先します。既存する場合は、異常 |
- | |終了し、改変しません。 |
- |[D[1]] |旧ファイルを拡張子.OLDとして順次保存します。 |
- | |デフォルト処理です。 |
- |D3 |旧ファイルを削除し、保存しません。リネームし |
- | |てから削除するので、特殊な専用プログラムを使 |
- | |用すれば、復旧できます。ただし、連続して多く |
- | |のファイルを処理した場合は、メディア領域が重 |
- | |複使用されている可能性が高いので、復旧は期待 |
- | |できません。 |
- +-----------------------+---------------------------------------------+
- |N |通常はファイル終端に1Ahを書き込みますが、こ |
- | |のオプションで抑止できます。 |
- +-----------------------+---------------------------------------------+
- |B[<バッファサイズ>(4096)] |このプログラムでは、行単位でメモリを確保して |
- | |います。大抵は大きさを予想出来るのですが、最 |
- | |初の1ラインが出来ません。このオプションは、 |
- | |最初に用意するメモリの大きさを指定するもので |
- | |す。デフォルトの4096バイトで、51.2行、約2画 |
- | |面分、改行記号無しで処理できるということにな |
- | |ります。 |
- +-----------------------+---------------------------------------------+
- |T[<タブサイズ>(8)] |ハードウェアタブの大きさを指定します。常識的 |
- | |な値を指定して下さい。これが有効な(必要な) |
- | |オプションは、禁則処理、タブ・スペース変換な |
- | |どになります。 |
- +-----------------------+---------------------------------------------+
- |TS |タブをスペースに変換します。 |
- |TT |スペースをタブに変換します。極力タブに変換す |
- | |るようになっていますので、使用に際しては、注 |
- | |意して下さい。 |
- +-----------------------+---------------------------------------------+
- |K[<タテ><ヨコ><カド>(|-+)] |NECやJISの罫線文字を、指定された半角文 |
- | |字に置き換えます。全角の罫線文字は、半角右付 |
- | |けに置き換えられます。このドキュメントも、そ |
- | |の機能で置き換えたものです。 |
- | |3文字ともスペースを指定すると、罫線を消去 |
- | |できますが、デリミタ文字なので、ダブルクォー |
- | |テーションで "/K " のように、オプションご |
- | |と囲んで指定して下さい。 |
- +-----------------------+---------------------------------------------+
- |SZU |全角英字の大文字化 |
- |SZL |全角英字の小文字化 |
- |SZH |全角英数字カナ記号の半角化。ドキュメントなど |
- | |の容量を減らすことに貢献させようと考えてつけ |
- | |たオプションです。 |
- +-----------------------+---------------------------------------------+
- |SHU |半角英字の大文字化 |
- |SHL |半角英字の小文字化 |
- |SHZ |半角英数字カナ記号の全角化 |
- +-----------------------+---------------------------------------------+
- |C[<カットサイズ>(72)] |文章の折り畳みと、それに付随する禁則処理を指 |
- | |定するオプションです。泣き別れで半角1文字、 |
- | |禁則で半角2文字、最大で半角3文字、指定幅を |
- | |上回ります。 |
- +-----------------------+---------------------------------------------+
- | |以下のオプションは、折り畳みに付随するもので |
- | |す。/C無しでも折り畳みをしますので、注意して |
- | |下さい。 |
- |CH |半角文字を段落頭文字に指定します。 |
- |CK |全角記号を段落頭文字に指定します。HRRNのよう |
- | |に、段落頭に▽などを使う人には有効です。 |
- |CN |全角数字を段落頭文字に指定します。 |
- | |通常の段落頭文字は、全半角のスペースとタブ、 |
- | |改行記号などです。 |
- +-----------------------+---------------------------------------------+
- |L |#####:の形式で、ノンブルをふります。プログラ |
- | |ムの指導書などの作成を意図して付けたオプショ |
- | |ンです。 |
- +-----------------------+---------------------------------------------+
-
- ▽オプションの併用は、以下に示す設計上の特性をご理解の上、細心の注意を払っ
- て行って下さい。
-
- 《処理の流れ》
- +-------------------------------------------+
- | ・1ラインの読み込み |
- +-------------------------------------------+
- ↓
- +-------------------------------------------+
- | ・タブからスペースへの変換 |
- | ・スペースからタブへの変換 |
- +-------------------------------------------+
- ↓
- +-------------------------------------------+
- | ・全角文字の大文字化小文字化 |
- | ・半角文字の大文字化小文字化 |
- +-------------------------------------------+
- ↓
- +-------------------------------------------+
- | ・全角文字の半角化 |
- | ・半角文字の全角化 |
- +-------------------------------------------+
- ↓
- +-------------------------------------------+
- | ・NEC,JIS罫線の文字化 |
- +-------------------------------------------+
- ↓
- +-------------------------------------------+
- | ・折り畳み・禁則処理 |
- +-------------------------------------------+
- ↓
- +-------------------------------------------+
- | ・行番号の付加 |
- +-------------------------------------------+
- ↓
- +-------------------------------------------+
- | (・泣き別れの検査) |
- +-------------------------------------------+
- ↓
- +-------------------------------------------+
- | ・1ラインの書き込み |
- +-------------------------------------------+
-
- ▽上図のように、ある1ブロックの処理は、その前に位置する全てのブロックの
- 処理が済んでから、実行に移されます。1ラインという単位ごとに順番に処理さ
- れるので、ファイル全体としては、前のブロックが完全に終了しない内に、次の
- 処理がオーバーラップして始められることになります。ラインに要するメモリは
- 限られているので、テンポラリファイルの類を使用する必要はなく、よい方法だ
- と思って採用しました。ですから、最初と最後以外は、ファイルアクセスをしま
- せん(そうでなきゃ、ただでさえテンポラリファイルを書くリダイレクトには使
- えないと思うし…)。
-
- ▽同じ四角で囲まれたブロック内に併記された処理は、排他的に存在します。で
- すから、同時にオプション指定をすることはナンセンスですし、動作が定義され
- ていないので、避けて下さい。別のブロックに位置する処理同士なら、問題なく
- 動作するはずですが、その場合も、全角半角変換などで行の長さが変化し、罫線
- にズレが生ずる可能性など、考慮すべき点があることに気をつけて下さい。
-
- ▽折り畳み処理は、その性格上、タブ文字を苦手とします。行頭タブなどは問題
- なく処理しますが、折り畳みの位置によっては、行末に飛び出たタブ文字が出現
- することがあります。これはバグではなく仕様ですので、予めご了承下さい。も
- しもタブ文字にあまり重要性がない場合は、/TSオプションを併用し、タブをスペー
- スに変換して下さい。問題なく処理します。
-
-
- ▽使用例
- +---------------------------------------------------------------------+
- | CUTTER URANAI?D.* /D /C38 |
- | CUTTER /K!-* /C FTS.TXT /D2 |
- | CUTTER /TS /C78 FILELIST.DOC |
- | DIR | CUTTER /R /C16 /CH |
- +---------------------------------------------------------------------+
-
- ▽全くオプションを付けず、ファイル名のみ指定して実行した場合は、原則とし
- て全く同じものができあがります。ただ、オリジナルテキストが異常だった場合
- はこの限りではありません。また、1バイトのサイズの増減が生じる場合があり
- ます。これは、EOF文字である1Ahを付けるか否かによるものです。
-
- ▽CUTTERは、常時出力を検査し、泣き別れを検出するようになっています。
- 泣き別れは、本来あってはならないことなので、
-
- 『##### 行に異常があります』
-
- というエラーが表示された場合は、このプログラムにバグがあると判断できます。
- かなりのチェックをしてありますが、万一このようなエラー表示があった場合は、
- バージョンアップを待って下さい。ただし、先に述べたように、オリジナルテキ
- ストが異常だった場合、即ちバイナリファイルであったり元々泣き別れを含んで
- いるファイルであったりする場合は、かなりの確立で必然的にエラー表示がされ
- ます。オプション無しでも、エラーチェックのみ行われているので、先のエラー
- がでた場合は、一度オプションを一切付けずにCUTTERを駆動させて下さい。
- これでエラーがでないようでしたら、いよいよバグです(うるうる…^^;)。
-
-
- ★注意事項★
-
- ▽個人の責任で使用して下さい。このプログラムの運用結果には、いかなる状況
- においても全く責任が取れません。ご理解願います。また、バグがないことも保
- 障できませんし、バグフィクスの義務も負いません。
-
- ▽コピーは自由ですが、著作権を放棄するわけではありません。無改造のプログ
- ラムを、別の著作名で発表することはできません。
-
- [ETX]
-